<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<?xml version="1.0"?>
<html lang='en-US' xml:lang='en-US' xmlns='http://www.w3.org/1999/xhtml'>
<head>
<script src="js/prototype.js" type="text/javascript"></script>
<script src="js/scriptaculous.js" type="text/javascript"></script>
<script src="js/tt.js" type="text/javascript"></script>
<title>UQ timetabler</title>
<link rel="stylesheet" media="screen" type="text/css" href="screen.css"/>
<link rel="stylesheet" media="print" type="text/css" href="print.css"/>
<meta name="keywords" content="uq,timetable,optimise,print,ical,mysinet,sinet"/>
<meta name="description" content="An online utility for working with UQ timetables in a nice shiney graphical fashion. No installation required, does not need your Sinet password!"/>
<meta name="verify-v1" content="tgSsh4WrFGb+IxpbC64PhzdgSzGu259UVHkHWrNuYyk=" />
</head>
<body>
	<a id="help_link" href="#" onclick="$('help').blindDown(); return false;"><b>How to use</b></a>
	<h1>UQ Web Timetabler</h1>
	<div id="busy" style="display: none;">
		<img src="busy.gif"/> loading...  
	</div>
	<div id="status" style="display: none">
		<div id="fetch"></div>
		<div id="loadable"></div>
		<div id="legend">Series Legend
		<ul id="loaded"></ul></div>
	</div>
	<div id="help" style="display: none;">
		<div>
		<a href="#" onclick="$('help').fade(); return false;" style="float:right">Close</a>
		<b>How to use</b>
		<p>(this is part of the <a href="doc/">UQtt project</a>)</p>
		<p>This application fetches University of Queensland (UQ) course timetables from mySI-net and produces timetables, on-screen and in iCal format for external use.</p>
		<p>To <b>create a new timetable</b>, choose the <a href="#">New</a> button, then add some course series to the timetable using the <a href="#">Add courses</a> button.</p>
		<p>Once you hit the <a href="#">Save</a> button and fill out your name and a brief description for the timetable, it is saved in the system. Any changes you make after saving are automatically saved as well (it's recommended that you lock saved timetables so that other people can't change them as well!).</p>
		<p><b>iCal</b> -- After you've saved, you can access your timetable as an iCal feed -- this can be used by applications such as Google Calendar, iCal, Microsoft Outlook, Mozilla Sunbird, and other calendaring utilities. To use in Google Calendar, right-click the iCal link and select Copy, then in Google Calendar go to Other Calendars -&gt; Add by URL, and paste the URL in.</p>
		<p>To <b>load an existing timetable</b> simply choose the timetable from the Load selector and then press the <a href="#">Load</a> button. Note that any changes you make after loading a timetable are automatically saved.</p>
		<p><b>Locking</b> -- saved timetables can be locked so that a key is required to make further changes. Choose the <a href="#">Lock</a> link after saving to create a key.</p>
		<p><b>Manual fetch</b> If the course series you want is not on the list, to fetch it from mySI-net into the system, press the <a href="#">Fetch/update</a> button and enter the course code. The updater will then appear under the Threads list on the right-hand side. When it reaches &quot;done&quot; status, the course series is ready for use.</p>
		<p><b>Optimisation</b> can be used to arrive at a satisfactory timetable choice. It uses a set of weighted rules to decide on the best possible combination of choices available to you, usually taking only a few minutes to decide.</p>
		<p style="font-size: 0.8em; color: #999;">Please note that I am not affiliated with UQ for the purposes of this application in any way, this project has not been authorised or endorsed by the University in any form, and no guarantee is made of accuracy of any information provided herein (that said, it mostly does work)</p>
		</div>
	</div>
	<div id="tooltip" style="display: none;">
	</div>
	<div id="optim_starter" style="display: none;">
	  <div>
	    <b>Optimisation options</b>
	    <p>This tool will perform a weighted-rule optimisation on your timetable. Below are the rules available and their default weights.</p>
	    <p>Timetables are marked starting at 1.00, and each time a rule is violated, the penalty rate (below) for that rule is subtracted from the score. The timetable with the highest score is then selected and returned to you.</p>
	    <p>To begin optimisation, select the <b>Start</b> button.</p>
	    <p>
	    <table>
	      <tbody id="optim_opts">
        </tbody>
      </table>
        <a href="#" onclick="startOptimise(); return false;">Start</a>
        <a href="#" onclick="$('optim_starter').fade(); return false;">Hide</a>
	  </div>
	</div>
	
	<div id="optim_feedback" style="display: none;">
	  <div>
	    <b>Optimisation complete</b>
	    <p>Final score: <span id="optim_score">0.00</span></p>
	    <p>Total time: <span id="optim_time">0 hr 0 min 0 s</span></p>
	    <p>Trace: </p>
	    <table>
	      <tbody id="optim_trace">
	        </tbody>
	      </table>
	    <p><a href="#" onclick="loadSession(window.session_id); return false;">Show original</a></p><p> <a href="#" onclick="reloadOptimised(); return false;">Show optimised</a></p><p>
	    <a href="#" onclick="$('optim_feedback').fade(); return false;">Close</a></p>
	    </div>
	</div>
	
	<div id="cal" style="display: none;">
	</div>

	<div id="main_toolbar" class="toolbar" style="display: none">
		<!-- todo: remove all of the inline onclicks
		and replace them with js -->
		<div class="toolitem">
			<a href="#" onclick="newSession(); return false;">New</a>
		</div>
		<div class="toolitem">
			<select id="session_select"></select><a href="#" onclick="loadSession($F('session_select')); return false;">Load</a> 
		</div>
		<div class="toolitem"><a href="#" onclick="$('autoadd').appear({ to: 0.9 }); autoGuess(); return false;">Add courses</a></div>
		<div class="toolitem">
			<a href="#" onclick="startFetch(prompt('Enter course code')); return false;">Fetch/update</a>
		</div>
		<div class="toolitem">
			<a href="#" onclick="clearEvents(); return false;">Delete all</a>
		</div>
		<div class="toolitem" id="session_details">
		</div>
		<div class="toolitem" id="lock">
		</div>
		<div class="toolitem">
			<a href="#" onclick="optimise(); return false;">Optimise</a>
		</div>
		<div class="toolitem" style="display: none;">
			<select id="course_select"></select><select id="series_select"></select><select id="number_select"></select> <a href="#" onclick="loadGroupOnce($F('course_select'),$F('series_select'), $F('number_select')); return false">Add group</a>
		</div>
	</div>

	<div id="autoadd" style="display: none;">
		<a style="float:right;" href="#" onclick="$('autoadd').fade(); return false;">Hide</a>
		<a style="float:right;" href="#" onclick="autoClear(); return false;">Clear</a>
		<a style="float:right;" href="#" onclick="autoGuess(); return false;">Guess</a>
		<b style="float:left; margin-right: 20px;">Auto-add</b>
		<div style="float:left; margin-right: 20px;">
			Courses
			<table>
				<tbody id="auto_courses"></tbody>
			</table>
			<a href="#" onclick="autoCourseAdd(); return false;">+ course</a>
		</div>
		&nbsp;
	</div>
	<div id="messages">
	</div>
</body>
</html>
